package cn.jobstart.search;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import cn.jobstart.pubInter.BaseSearch;
import cn.jobstart.model.School;
import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
import lombok.Data;
/**
*   @author sunke
*   @Date 2023-11-08 20:33:28
*   @description SchoolSearch      学校
*/


@Data
@ApiModel("学校SchoolSearch")
public abstract class SchoolSearch<Sub extends SchoolSearch<Sub>> extends BaseSearch {
    @ApiModelProperty(value = "主键")
    private List idIn;
    @ApiModelProperty(value = "大于排序")
    private Integer sortNumGreater;
    @ApiModelProperty(value = "小于排序")
    private Integer sortNumLess;
    @ApiModelProperty(value = "是否显示 1:是:Y,0:否:N")
    private List showFlagIn;
    @ApiModelProperty(value = "是否删除 1:删除:Y,0:正常:N")
    private Integer delFlagEq=0;
    @ApiModelProperty(value = "版本")
    private Integer versionEq;
    @ApiModelProperty(value = "学校名称")
    private String nameLike;
    @ApiModelProperty(value = "英文名")
    private String enNameLike;
    @ApiModelProperty(value = "编号")
    private String codeNumLike;
    @ApiModelProperty(value = "层次 1:本科:Undergraduate,2:专科:Specialist,3:成人高等学校:Adult_high_school")
    private List levelIn;
    @ApiModelProperty(value = "办学类型 1:民办:Private,2:中外合作办学及内地与港澳合作办学:Sino_foreign_cooperation,3:境外高等教育机构在海南自由贸易港设立的实施理工农医类学科专业的学校）:Outside")
    private List schoolTypeIn;
    @ApiModelProperty(value = "是否国内学校 1:国内:Y,0:国外:N")
    private List chinaIn;
    @ApiModelProperty(value = "国家")
    private String countryLike;
    @ApiModelProperty(value = "省")
    private String provinceLike;
    @ApiModelProperty(value = "市")
    private String cityLike;
    @ApiModelProperty(value = "标签 1:985:school_985,2:211:school_211,4:双一流:double_first_class")
    private Integer flagBit;

    public SchoolSearch() {
        setDelFlagEq(0);
    }



    /**
    * 返回子类Sub
    * @return
    */
    public abstract Sub getSubThis();

    @Override
    public String createTimeFiled() {
        return School.CREATE_TIME;
    }
    @Override
    public String updateTimeFiled() {
        return School.UPDATE_TIME;
    }
    @Override
    public String  setDefaultField() {
        return School.CREATE_TIME;
    }
    @Override
    public String pkField() {
        return School.ID;
    }

    @Override
    public String  toString() {
        return "SchoolSearch{}"+super.toString();
    }
    public Sub setIdIn(List idIn){
        this.idIn = idIn;
        setInField(School.ID, idIn);
        return getSubThis();
    }
    public Sub setSortNumGreater(Integer sortNumGreater){
        this.sortNumGreater = sortNumGreater;
        setGreaterField(School.SORT_NUM, sortNumGreater);
        return getSubThis();
    }
    public Sub setSortNumLess(Integer sortNumLess){
        this.sortNumLess = sortNumLess;
        setLessField(School.SORT_NUM, sortNumLess);
        return getSubThis();
    }
    public Sub setShowFlagIn(List showFlagIn){
        this.showFlagIn = showFlagIn;
        setInField(School.SHOW_FLAG, showFlagIn);
        return getSubThis();
    }
    public Sub setDelFlagEq(Integer delFlagEq){
        this.delFlagEq = delFlagEq;
        setEqualField(School.DEL_FLAG, delFlagEq);
        return getSubThis();
    }
    public Sub setVersionEq(Integer versionEq){
        this.versionEq = versionEq;
        setEqualField(School.VERSION, versionEq);
        return getSubThis();
    }
    public Sub setNameLike(String nameLike){
        this.nameLike = nameLike;
        setLikeField(School.NAME, nameLike);
        return getSubThis();
    }
    public Sub setEnNameLike(String enNameLike){
        this.enNameLike = enNameLike;
        setLikeField(School.EN_NAME, enNameLike);
        return getSubThis();
    }
    public Sub setCodeNumLike(String codeNumLike){
        this.codeNumLike = codeNumLike;
        setLikeField(School.CODE_NUM, codeNumLike);
        return getSubThis();
    }
    public Sub setLevelIn(List levelIn){
        this.levelIn = levelIn;
        setInField(School.LEVEL, levelIn);
        return getSubThis();
    }
    public Sub setSchoolTypeIn(List schoolTypeIn){
        this.schoolTypeIn = schoolTypeIn;
        setInField(School.SCHOOL_TYPE, schoolTypeIn);
        return getSubThis();
    }
    public Sub setChinaIn(List chinaIn){
        this.chinaIn = chinaIn;
        setInField(School.CHINA, chinaIn);
        return getSubThis();
    }
    public Sub setCountryLike(String countryLike){
        this.countryLike = countryLike;
        setLikeField(School.COUNTRY, countryLike);
        return getSubThis();
    }
    public Sub setProvinceLike(String provinceLike){
        this.provinceLike = provinceLike;
        setLikeField(School.PROVINCE, provinceLike);
        return getSubThis();
    }
    public Sub setCityLike(String cityLike){
        this.cityLike = cityLike;
        setLikeField(School.CITY, cityLike);
        return getSubThis();
    }
    public Sub setFlagBit(Integer flagBit){
        this.flagBit = flagBit;
        setBitField(School.FLAG, flagBit);
        return getSubThis();
    }
}